--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/Utils.test.js v4.5.0-rc.5 (eee4a4d7) Text, 7.23 KB
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3viTb4b4b4, Te6edf3beforeEachTb4b4b4, Te6edf3afterEach Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"@/js/Utils"Tb4b4b4;
Tff7b72import Te6edf3dayjs Tff7b72from Ta5d6ff"dayjs"Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"Utils.js"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3describeTb4b4b4(Ta5d6ff"formatDestinationHash"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formats destination hash correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3hash Tff7b72= Ta5d6ff"e253d0b19fe34c3f0a09569165abc45a"Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"<e253d0b1...65abc45a>"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"formatBytes"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formats 0 bytes correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0 Bytes"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats KB correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(T79c0ff1024Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 KB"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(T79c0ff1500Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 KB"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats MB correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(T79c0ff1024 Tff7b72* T79c0ff1024Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 MB"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles negative numbers"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Tff7b72-T79c0ff1024Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0 Bytes"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles null or undefined"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0 Bytes"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0 Bytes"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"formatNumber"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formats 0 correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatNumberTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats large numbers with commas"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// Using a regex to match either comma or space or whatever locale-specific grouping separator is used
T8b949e// But since we are in jsdom with default locale, it should be comma or similar.
T8b949e// Actually, we can just check if it's a string.
Tff7b72const Te6edf3result Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatNumberTb4b4b4(T79c0ff1234567Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72typeof Te6edf3resultTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"string"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/1.234.567/Tb4b4b4)Tb4b4b4; T8b949e// Matches 1,234,567 or 1.234.567 etc.
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"handles null or undefined correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatNumberTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatNumberTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"parseSeconds"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"parses seconds into days, hours, minutes, and seconds"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3seconds Tff7b72= T79c0ff1 Tff7b72* T79c0ff24 Tff7b72* T79c0ff3600 Tff7b72+ T79c0ff2 Tff7b72* T79c0ff3600 Tff7b72+ T79c0ff3 Tff7b72* T79c0ff60 Tff7b72+ T79c0ff4Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3parseSecondsTb4b4b4(Te6edf3secondsTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4{
Te6edf3daysTff7b72: T79c0ff1Tb4b4b4,
Te6edf3hoursTff7b72: T79c0ff2Tb4b4b4,
Te6edf3minutesTff7b72: T79c0ff3Tb4b4b4,
Te6edf3secondsTff7b72: T79c0ff4Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"formatSeconds"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff'formats "a second ago"'Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"a second ago"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"a second ago"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats minutes ago"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsTb4b4b4(T79c0ff60Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 min ago"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsTb4b4b4(T79c0ff120Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"2 mins ago"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats hours ago"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsTb4b4b4(T79c0ff3600Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 hour ago"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsTb4b4b4(T79c0ff7200Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"2 hours ago"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats days ago"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsTb4b4b4(T79c0ff86400Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 day ago"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatSecondsTb4b4b4(T79c0ff172800Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"2 days ago"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"formatTimeAgo"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3useFakeTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3useRealTimersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats SQLite format date correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3now Tff7b72= Tff7b72new Tffa657DateTb4b4b4(Ta5d6ff"2025-01-01T12:00:00Z"Tb4b4b4)Tb4b4b4;
Te6edf3viTb4b4b4.Te6edf3setSystemTimeTb4b4b4(Te6edf3nowTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pastDate Tff7b72= Ta5d6ff"2025-01-01 11:59:00"Tb4b4b4; T8b949e// 1 min ago
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatTimeAgoTb4b4b4(Te6edf3pastDateTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 min ago"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff'returns "unknown" for empty input'Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatTimeAgoTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"unknown"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"formatMinutesSeconds"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formats seconds into MM:SS"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(T79c0ff65Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"01:05"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(T79c0ff3600Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"00:00"Tb4b4b4)Tb4b4b4; T8b949e// 3600s is 0m 0s in the current implementation because it only looks at minutes and seconds from parseSeconds
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"convertUnixMillisToLocalDateTimeString"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"converts unix millis to formatted string"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3millis Tff7b72= Tff7b72new Tffa657DateTb4b4b4(Ta5d6ff"2025-01-01T12:00:00Z"Tb4b4b4)Tb4b4b4.Te6edf3getTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// dayjs format depends on local time, so we just check if it returns a string with expected components
Tff7b72const Te6edf3result Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3convertUnixMillisToLocalDateTimeStringTb4b4b4(Te6edf3millisTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4.Te6edf3toMatchTb4b4b4(Ta5d6ff/2025-01-01/Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"formatBitsPerSecond"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formats 0 bps correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBitsPerSecondTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0 bps"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats kbps correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatBitsPerSecondTb4b4b4(T79c0ff1000Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 kbps"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"formatFrequency"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"formats 0 Hz correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatFrequencyTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"0 Hz"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"formats kHz correctly"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3formatFrequencyTb4b4b4(T79c0ff1000Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"1 kHz"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"isInterfaceEnabled"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff'returns true for "on", "yes", "true"'Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Tb4b4b4{ Te6edf3enabledTff7b72: Ta5d6ff"on" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Tb4b4b4{ Te6edf3enabledTff7b72: Ta5d6ff"yes" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Tb4b4b4{ Te6edf3enabledTff7b72: Ta5d6ff"true" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Tb4b4b4{ Te6edf3interface_enabledTff7b72: Ta5d6ff"true" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"returns false for other values"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Tb4b4b4{ Te6edf3enabledTff7b72: Ta5d6ff"off" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3isInterfaceEnabledTb4b4b4(Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72null Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"escapeHtml"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"escapes angle brackets"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(Ta5d6ff"<script>"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"<script>"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(Ta5d6ff"</div>"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"</div>"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"escapes quotes and ampersand"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(Ta5d6ff'"double"'Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff""double""Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(Ta5d6ff"'single'"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"'"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(Ta5d6ff"a&b"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"a&b"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"returns empty string for null and undefined"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"escapes mixed XSS-like string so attribute is not executable"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3s Tff7b72= Ta5d6ff'<img src="x" onerror="alert(1)">'Tb4b4b4;
Tff7b72const Te6edf3out Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3outTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<img"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3outTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"<"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3outTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"""Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3outTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff'onerror="alert'Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"does not throw on number (coerces)"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(T79c0ff12345Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toThrowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3UtilsTb4b4b4.Te6edf3escapeHtmlTb4b4b4(T79c0ff12345Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"12345"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────